package 作业;

import java.io.BufferedReader;
import java.io.FileNotFoundException;
import java.io.FileReader;
import java.io.IOException;
import java.util.*;

/**
 * 读取work.txt文件，统计每个数据出现的次数，并打印出现次数最多的6个数据
 *
 * 文件内容如下：
 *
 * 23,45,4556,68,8934,3,456,68,9,789
 * 90,324,5,343,7678,242,234,12,6,789
 * 34,89,45,34,24,234,56,78,89,9,3434
 * 23,12,24,46,68,7,8945342,2134,23,45
 * 56,68,79,9,324,342434,21,342,4,76,7987
 * 987,2345,124,234,34,457,6778,58,124,335,567
 *
 * 数字在不同行,建文件的时候需要换行.这道题需要用IO流和集合 相结合来解决问题
 */
public class Test {
    public static void main(String[] args) throws IOException {
        HashMap<Integer,Integer>map=new HashMap<>();//创建一个HashMap集合
        BufferedReader br = new BufferedReader(new FileReader("H:\\javabase_ws2\\java_advance\\Day14_Threadpool\\src\\作业\\work.txt"));//读取文件
        String line;
        ArrayList<Integer> list =new ArrayList<>();//创建一个集合
        while ((line = br.readLine()) != null && !line.isEmpty()){
            String arr[]=line.split(",");//将每一行数据以逗号分隔
            for (String s : arr) {
                list.add(Integer.parseInt(s));//将数据添加到集合中
            } //循环读取文件
        }
        //2.1对80张票机票操作
        for (Integer v : list) {
            //查询map中是否有此景点
            if (map.containsKey(v)) {
                //2.3如果有，则将此景点的票数 +1
                map.put(v, map.get(v) + 1); //更新票数
            } else {
                //2.2如果没有，存入此景点：（景点名称 = 1）
                map.put(v, 1);
            }
        }
        br.close(); // 关闭文件流
        // 将HashMap的条目转换为列表并按出现次数排序
        List<Map.Entry<Integer, Integer>> entryList = new ArrayList<>(map.entrySet());
        entryList.sort(new Comparator<Map.Entry<Integer, Integer>>() {

            @Override
            public int compare(Map.Entry<Integer, Integer> o1, Map.Entry<Integer, Integer> o2) {
                return o2.getValue().compareTo(o1.getValue());
            }
        });
        for (int i = 0; i < Math.min(6, entryList.size()); i++) {
            Map.Entry<Integer,Integer>entry=entryList.get(i);
            System.out.println(entry.getKey()+"出现了"+entry.getValue()+"次");
        }
    }
}
